package cn.haut.online_read.crawler;

import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.processor.PageProcessor;
import us.codecraft.webmagic.selector.Selectable;

import java.util.ArrayList;
import java.util.List;

/**
 * 爬取男生，女生，与出版的热搜榜的URL
 *
 * 爬取的排行榜页面，界面参考的微信读书，
 * 所以为了一致性(主页面只有四个排行榜)，
 * 只爬取男生，女生，与出版的热搜榜的URL
 *
 * @author xing
 * @date 2021-05-04 17:28
 */
public class RankingListHotSearchUrlCrawler implements PageProcessor {

    private Site site = Site.me().setSleepTime(1);

    @Override
    public void process(Page page) {
        // 根据对应 a 标签下 span 标签的名字找
        // 获取 所有 a 标签
        Selectable aTagsSelectable = page.getHtml().xpath("//div[@class='sub-sideBar']/a");
        // 获取所有 a 标签下的 span 标签里的内容，
        // span[1] 是为了确保下边通过索引获取 a 标签的 href值与判断到的 span 值的 spanTextList 位置索引 一致
        List<String> spanTextList = aTagsSelectable.xpath("//a/span[1]/text()").all();
        // 存储爬到的 类型下 热搜榜的 url
        List<String> rankingUrlList = new ArrayList<>();
        for (int i = 0; i < spanTextList.size(); i++) {
            if ("热搜榜".equals(spanTextList.get(i))) {
                rankingUrlList.add(
                        aTagsSelectable
                                .xpath("//a/@href")
                                .all()
                                .get(i)
//                                .replaceAll("\\?.*","")
//                                .replace("/ranking/", "")
                );
            }
        }

        page.putField("rankingUrlList", rankingUrlList);
    }

    @Override
    public Site getSite() {
        return site;
    }

}
